1. Field of the Invention
The present invention generally relates to the art of digital computers, and more specifically to a Basic Input-Output System (BIOS) Read-Only Memory (ROM) with a capability for vertically scrolling bitmapped graphic text by columns.
2. Description of the Related Art
The graphic display capabilities of digital computers are constantly improving. Video modes which provide extremely high resolution and the display of hundreds of colors are now commonplace.
Older video modes such as Color Graphics Adapter (CGA) are almost obsolete. However, it is desirable to provide backward compatibility for the older modes, so that software which was written to use these modes will run on a newer computer.
There are also some applications which can benefit from running in an older, simpler graphics mode. For example, an electronic cash register in a supermarket may display only a few rows of simple text, and need nothing more than what can be provided at high speed and low complexity by a CGA text mode.
In IBM type computers, for example, video display services such as text scrolling are invoked by storing input parameters in computer registers, and generating an interrupt 10h request (the letter "h" following a number indicates that it is a hexadecimal number). To maintain backward compatibility, the video display services that are invoked via interrupt 10h must be located in the computer's Basic Input-Output System (BIOS) Read-Only Memory (ROM) chip.
A video service that is commonly used is vertical scrolling of bitmapped graphic images and text. FIG. 1 illustrates an exemplary computer video display 10 including several windows, more specifically a graphic image window 12, an incoming text window 14, and a status window 16 for a communications program.
The graphic image window 12 may display the program logo, an image that was downloaded, etc. The status window 16 may display the communication status variables of the program. The text window 14 displays incoming text in the form of rows that scroll upwardly such that new rows can be added to the bottom.
Rows of text in bitmapped graphics mode are conventionally scrolled upwardly by rows as illustrated in FIGS. 2a to 2f. FIG. 2a illustrates an initial condition. In FIG. 2b, the second row has been scrolled upwardly by one row, with the top row of FIG. 2a disappearing off the top of the display 10. The display now includes the original second row which was copied to the top row.
In FIGS. 2c to 2e, the original third, fourth and fifth rows have been scrolled upwardly by one row, such that the original fifth row is copied to the fourth row. In FIG. 2f, the bottom row is blanked so that a new row can be inserted at the bottom.
FIGS. 3a to 3f are essentially similar to FIGS. 2a to 2f, except that the display is scrolled downwardly by one row to make room for a new row at the top.
It will be noted that bitmapped video scrolling is not limited to text displays. Graphic images can be scrolled in essentially the same manner.
The CGA standard includes a number of display modes. Those of relevance include text modes 4, 5 and 6. Mode 4 provides a 40 column color display with four colors. Mode 5 provides a 40 column greyscale display with 4 levels. Mode 6 provides an 80 column monochrome display (two color).
European Patent No. 71725, granted Aug. 31, 1988, entitled "METHOD FOR SCROLLING TEXT AND GRAPHIC DATA IN SELECTED WINDOWS
OF A GRAPHIC DISPLAY", to J. Bradley, teaches how to scroll bitmapped text rows in CGA modes 4, 5 and 6 as described above with reference to FIGS. 1, 2a to 2f, and 3a to 3f. This patent also describes how the text characters are represented by scan lines of pixels (bytes or words) which are stored in two banks in a video display buffer or memory. Even scan lines are stored in one bank, whereas odd scan lines are stored in the other bank.
Scrolling is performed in a "ping-pong" manner, by reading a scan line from the even bank and writing it to a new location in the even bank, reading a scan line from the odd bank and writing it to a new location in the odd bank, and repeating this operation for the remaining scan lines until the text in the window has been scrolled by the designated number of rows.
An improvement to the row-by-row scrolling method presented by Bradley is disclosed in German Patent Application No. 4405330A1, entitled "METHOD FOR SCROLLING SEVERAL SCREEN LINES IN A WINDOW OF A PC MONITOR IN THE GRAPHIC MODE", published Aug. 24, 1995, to G. Paley et al. This patent teaches how to increase the scrolling speed by moving two or more scan lines in one operation.
The prior art is not believed to include any arrangements for vertically scrolling text by columns rather than rows. This is because row-by-row scrolling is able to utilize string instructions which enable an entire scan line to be moved by executing a single instruction, and has an implied speed advantage over column-by-column scrolling which cannot use these instructions.
More specifically, moving a column of text requires a separate set of instructions to be executed for each scan line (byte in CGA mode 6, word in CGA modes 4 and 5) in the column.
A constant equal to the number of bytes in each row (e.g. 80) must be added to the current memory location to point to the next scan line in the column. Then, another instruction must be executed to move the scan line from its original location to a new location in the video memory.
The substantially increased number of instructions required to scroll by columns rather than rows translates directly into a substantially increased length of time required to perform the scrolling operation as understood heretofore. For this reason, vertical scrolling is believed to have been performed only on a row-by-row basis in the prior art.